﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Bussiness.Entity;
using Bussiness.Manager;

namespace DSC
{
    public partial class frmAgentDetail2 : AfChildrenForm
    {
        public string InfoBeforeChange { set; get; }
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (keyData == Keys.Escape) // thoat
            {
                this.Close();
                return true;
            }
            if (keyData == Keys.F5) // Luu thong tin
            {
                if(btnSave.Enabled==true)
                    SaveInfo();
                else
                    MessageBox.Show("Bạn không có quyền thực hiện chức năng này");
                return true;
            }
            return base.ProcessCmdKey(ref msg, keyData);
        }
        private void SaveInfo()
        {
            if (CheckInput())
            {
                PT_AccountEntity obj = new PT_AccountEntity();
                obj.UserCode = txtMaNhanVien.Text.Trim();
                obj.UserName = txtFullName.Text.Trim();
                obj.DisplayName = txtDisplayName.Text.Trim();
                obj.IsActive = checkActive.Checked;
                obj.IsDeleted = false;
                obj.IsSystem = false;
                if (UserID == 0)
                {
                    PT_AccountEntity option = new PT_AccountEntity();
                    option.UserCode = txtMaNhanVien.Text.Trim();
                    option.IsDeleted = false;
                    option.IsActive = true;
                    if (!string.IsNullOrEmpty(txtMaNhanVien.Text.Trim()) && PT_AccountManager.CreateInstant().SelectByUserCode(option).Rows.Count > 0)
                    {
                        MessageBox.Show("Mã nhân viên đã tồn tại. Vui lòng chọn mã nhân viên khác.");
                        return;
                    }
                    obj.CreatedBy = SessionLogin.UserCode;
                    obj.CreatedDate = DateTime.Now;
                    if (PT_AccountManager.CreateInstant().Insert(obj) != null)
                    {
                        MessageBox.Show("Thêm nhân viên thành công");
                        // history
                        PT_ActionHistoryManager.CreateInstant().SaveHistory(SessionLogin.UserId, "Thêm nhân viên", GetInfo());
                        RaiseChangeDataEvent();
                    }
                    else
                    {
                        MessageBox.Show("Thêm nhân viên không thành công. Vui lòng thử lại");
                    }
                }
                else
                {
                    obj.UserID = UserID;
                    obj.UpdatedBy = SessionLogin.UserCode;
                    obj.UpdatedDate = DateTime.Now;
                    if (PT_AccountManager.CreateInstant().Update(obj) != null)
                    {
                        MessageBox.Show("Cập nhật thông tin nhân viên thành công");
                        RaiseChangeDataEvent();
                        // history
                        PT_ActionHistoryManager.CreateInstant().SaveHistory(SessionLogin.UserId, "Sửa thông tin nhân viên", InfoBeforeChange + " ---- " + GetInfo());
                    }
                    else
                    {
                        MessageBox.Show("Cập nhật thông tin nhân viên không thành công. Vui lòng thử lại");
                    }
                }
            }
        }
        public frmAgentDetail2()
        {
            InitializeComponent();
        }
        public int UserID { set; get; }
        public frmAgentDetail2(int _UserID)
        {
            UserID = _UserID;
            InitializeComponent();
            if (_UserID != 0)
            {
                PT_AccountEntity obj = PT_AccountManager.CreateInstant().GetByID(_UserID);
                if (obj != null)
                {
                    txtMaNhanVien.Text = obj.UserCode;
                    txtFullName.Text = obj.UserName;
                    txtDisplayName.Text = obj.DisplayName;
                    checkActive.Checked = obj.IsActive;
                }
                this.Text = "Thông tin nhân viên";
            }
            else
                this.Text = "Thêm nhân viên";
            txtMaNhanVien.Enabled = false;
            InfoBeforeChange = GetInfo();
        }
        
        private bool CheckInput()
        {
            string error = "";

            if (string.IsNullOrEmpty(txtFullName.Text.Trim()))
            {
                error += "- Họ và tên\r\n";
            }
            if (!string.IsNullOrEmpty(error))
            {
                MessageBox.Show("Vui lòng điền đầy đủ các thông tin sau:\r\n" + error);
                return false;
            }
            return true;
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            SaveInfo();
        }
        public string GetInfo()
        {
            return "Mã nhân viên:" + txtMaNhanVien.Text + "\nHọ tên:" + txtFullName.Text + "\nTên tham chiếu:" + txtDisplayName.Text + "\nTình trạng:" + (checkActive.Checked == true ? "Hoạt động" : "Không hoạt động");
        }
    }
}
